package com.dev.base.able;

import ohos.agp.window.dialog.BaseDialog;

/**
 * detail: 基类 UI 交互相关操作方法
 * @author Ttt
 */
public interface IDevBaseUIOperation {
    /**
     * 当前是否可见 ( 生命周期 )
     */
    public boolean isCurrentVisible();

    // =========
    // = Toast =
    // =========

    /**
     * 显示 Toast
     * @param text       Toast 提示文本
     * @param formatArgs  格式化参数
     */
    public void showToast(String text, Object... formatArgs);

    /**
     * 显示 Toast
     * @param resId       R.string.id
     * @param formatArgs  格式化参数
     */
    public void showToast( int resId, Object... formatArgs);

    // ===============
    // = PopupWindow =
    // ===============

//TODO /**
//     * 获取 PopupWindow
//     * @return [PopupWindow]
//     */
//    fun getDevPopupWindow(): PopupWindow?
//
//TODO /**
//     * 设置 PopupWindow
//     * @param popupWindow [PopupWindow]
//     * @return [PopupWindow]
//     */
//    fun <T : PopupWindow?> setDevPopupWindow(popupWindow: T): T
//TODO
//    /**
//     * 设置 PopupWindow
//     * @param isClose     是否关闭之前的 PopupWindow
//     * @param popupWindow [PopupWindow]
//     * @return [PopupWindow]
//     */
//    fun <T : PopupWindow?> setDevPopupWindow(
//            isClose: Boolean,
//            popupWindow: T
//    ): T

    // ==========
    // = Dialog =
    // ==========

    /**
     * 获取 Dialog
     * @return [Dialog]
     */
    public BaseDialog getDevDialog();

    /**
     * 设置 Dialog
     * @param dialog [Dialog]
     * @return [Dialog]
     */
    public BaseDialog setDevDialog(BaseDialog dialog);

    /**
     * 设置 Dialog
     * @param isClose 是否关闭之前的 Dialog
     * @param dialog  [Dialog]
     * @return [Dialog]
     */
    public BaseDialog setDevDialog(Boolean isClose,  BaseDialog dialog);

    // ==================
    // = DialogFragment =
    // ==================

//TODO    /**
//     * 获取 DialogFragment
//     * @return [DialogFragment]
//     */
//    fun getDevDialogFragment(): DialogFragment?
//
//TODO    /**
//     * 设置 DialogFragment
//     * @param dialog [DialogFragment]
//     * @return [DialogFragment]
//     */
//    fun <T : DialogFragment?> setDevDialogFragment(dialog: T): T
//
//TODO    /**
//     * 设置 DialogFragment
//     * @param isClose 是否关闭之前的 DialogFragment
//     * @param dialog  [DialogFragment]
//     * @return [DialogFragment]
//     */
//    fun <T : DialogFragment?> setDevDialogFragment(
//            isClose: Boolean,
//            dialog: T
//    ): T
}
